const mongoose = require('mongoose');
const { Schema } = mongoose;

// 1.连接itcast数据库
// 指定连接的数据库不需要存在，当你插入第一条数据之后就会自动被创建出来
mongoose.connect('mongodb://localhost:itcast', { useNewUrlParser: true, useUnifiedTopology: true });

// 2.设计集合结构（表结构）
// 字段名称就是表结构中的属性名称
// 约束的目的是为了保证数据的完整性，不要有脏数据
// const blogSchema = new Schema({
//   title:  String,
//   author: String,
//   body:   String,
//   comments: [{ body: String, date: Date }],
//   date: { type: Date, default: Date.now },
//   hidden: Boolean,
//   meta: {
//     votes: Number,
//     favs:  Number
//   }
// });

const userSchema = new Schema({
    username: {
        type: String,
        require: true // 必须有
    },
    password: {
        type: String,
        require: true
    },
    email: {
        type: String
    }
});

// 3.将文档结构发布为模型
// mongoose.model方法就是用来将一个架构发布为model
// 第一个参数：传入一个大写名词单数字符串用来表示你的数据库名称，mongoose会自动将大写的字符串生成小写复数的集合名称，例如这里的User最终会变为users集合名称
// 第二个参数：架构Schema
// 返回值：模型构造函数
const user = mongoose.model('User', userSchema)


// 4.当有了模型构造函数之后，就可以使用这个构造函数对User中的数据为所欲为了

// 新增数据
var admin = new user({
    username: 'admin2',
    password: '1234567',
    email: 'admin@admin.com'
})

// admin.save(function (err, res) {
//     if (err) {
//         console.log('保存失败')
//     } else {
//         console.log('保存成功')
//         console.log(res)
//     }
// })

// 查询所有数据
// user.find(function (err, res) {
//     if (err) {
//         console.log(res)
//     } else {
//         console.log(res)
//     }
// })

// 按条件查询
// user.find({ username: 'admin1' }, function (err, res) {
//     if (err) {
//         console.log('查询失败')
//     } else {
//         console.log(res)
//     }
// })

// 删除数据
// user.remove({ username: 'admin1' }, function (err, res) {
//     if (err) {
//         console.log('删除失败')
//     } else {
//         console.log('删除成功')
//         console.log(res)
//     }
// })

// // 更新数据
user.findByIdAndUpdate('60619ed58eaa302a44e4a59b', { password: '12344545454545' }, function (err, res) {
    if (err) {
        console.log('更新失败')
    } else {
        console.log('更新成功')
        console.log(res)
    }
})